/*
 * Copyright 2009-2010 the original author or authors.
 *
 * Licensed under the Apache license, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.internna.iwebjtracker.activity;

import org.internna.iwebjtracker.model.Activity;
import org.internna.iwebjtracker.model.TrackerUser;
import org.internna.iwebjtracker.activity.model.RecordedActivity.ActivityType;

/**
 * A holder that can create activities
 *
 * @author Jose Noheda
 * @since 1.0
 */
public class ActivityHolderImpl extends AbstractActivityHolder<Activity, TrackerUser> {

    /**
     * Creates and stores and activity as long as both parameters are valid
     *
     * @param type any
     * @param user any
     * @return null unless both parameters are not null
     */
    @Override public Activity createActivity(ActivityType type, TrackerUser user) {
        Activity activity = null;
        if ((type != null) && (user != null)) {
            activity = new Activity();
            activity.setOriginator(user);
            activity.setType(type);
            store(activity);
        }
        return activity;
    }

    /**
     * Delegates the creation logic and sets the public visibility flag if able.
     *
     * @param type any
     * @param user any
     * @param isPublic any
     * @return any
     */
    public Activity createActivity(ActivityType type, TrackerUser user, boolean isPublic) {
        Activity activity = createActivity(type, user);
        if (activity != null) {
            activity.setPublicView(isPublic);
        }
        return activity;
    }

}
